package uniandes.ash.principal.baseDatos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;

import uniandes.ash.principal.objetos.Propietario;


public class PersistenciaPropietario implements InterfaceDAO{


	public HashMap<String, Propietario> materializarTodo() throws SQLException, ClassNotFoundException {
	    Propietario propietario = null;
	    String idDocumento;
	    String idCasa;
	    String nombres;
	    String apellidos;
	    String mail;
	    HashMap<String, Propietario> Lista=new HashMap<String, Propietario>();
		Connection conexion = (Connection) Conexion.obtenerSolitario().demeConexion();
		Statement st = (Statement) conexion.createStatement();
		try{
			ResultSet rs = (ResultSet) st.executeQuery("select * from Propietario;");
			while (rs.next()){
			    idDocumento=rs.getString( "idDocumento" );
			    idCasa=rs.getString( "idCasa" );
			    nombres=rs.getString( "nombres" );
			    apellidos=rs.getString( "apellidos" );
			    mail=rs.getString( "mail" );
			    propietario = new Propietario(idDocumento,idCasa,nombres,apellidos,mail);
			    Lista.put(idCasa, propietario);
			}
			conexion.close();
			return Lista;
		}finally{
			conexion.close();}

	}


    public void desmaterializar(Object propietario) throws SQLException, ClassNotFoundException {
        Connection conexion = (Connection)Conexion.obtenerSolitario().demeConexion();
        @SuppressWarnings("unused")
        Statement st = (Statement) conexion.createStatement();
        try{
            Propietario Propietario=(Propietario) propietario;
            String query="insert into Propietario values ";
                query+="('"+Propietario.getIdDocumento()+"','"+Propietario.getIdCasa()+"','"+ 
                Propietario.getNombres()+"','"+ Propietario.getApellidos()+"','"+ Propietario.getMail()+"');";   
            
            PreparedStatement pstmt1 = (PreparedStatement) conexion.prepareStatement(query);
            pstmt1.executeUpdate();        
        }finally{
            conexion.close();
        }

    }
    
    public void actualizar(Object propietario) throws SQLException, ClassNotFoundException {
        Connection conexion = (Connection)Conexion.obtenerSolitario().demeConexion();
        @SuppressWarnings("unused")
        Statement st = (Statement) conexion.createStatement();
        try{
            Propietario Propietario=(Propietario) propietario;
            String query="update Propietario set idCasa=";
                query+="'"+Propietario.getIdCasa()+"' ,nombres='"+Propietario.getNombres()
                +"' ,apellidos='" +Propietario.getApellidos()+ "' , mail='"+Propietario.getMail()+"' where idDocumento='"+ Propietario.getIdDocumento()+"';";   
            
            PreparedStatement pstmt1 = (PreparedStatement) conexion.prepareStatement(query);
            pstmt1.executeUpdate();        
        }finally{
            conexion.close();
        }
    }
    
    
    public void eliminar(Object idDocumento) throws SQLException, ClassNotFoundException {
        Connection conexion = (Connection)Conexion.obtenerSolitario().demeConexion();
        @SuppressWarnings("unused")
        Statement st = (Statement) conexion.createStatement();
        try{

            String query="delete from Propietario where idDocumento=";
                query+="'"+idDocumento+"';";   
            
            PreparedStatement pstmt1 = (PreparedStatement) conexion.prepareStatement(query);
            pstmt1.executeUpdate();        
        }finally{
            conexion.close();
        }
    }

}
